编译 Qt 源码,没有生成 libqxcb.so 的问题

Qt 通过不同的插件,在不同的平台上进行显示,例如:

  • libqlinuxfb.so 用于 Frame Buffer
  • libqxcb.so 用于 X11
  • libqwayland-generic.so 用于 Wayland

构建 X11 插件需要依赖许多 xcb 的开发包,可以通过下面的命令安装:

Qt 5.15.2:

1sudo apt install libfontconfig1-dev \
2                 libfreetype6-dev \
3                 libx11-dev \
4                 libx11-xcb-dev \
5                 libxext-dev \
6                 libxfixes-dev \
7                 libxi-dev \
8                 libxrender-dev \
9                 libxcb1-dev \
10                 libxcb-glx0-dev \
11                 libxcb-keysyms1-dev \
12                 libxcb-image0-dev \
13                 libxcb-shm0-dev \
14                 libxcb-icccm4-dev \
15                 libxcb-sync0-dev \
16                 libxcb-xfixes0-dev \
17                 libxcb-shape0-dev \
18                 libxcb-randr0-dev \
19                 libxcb-render-util0-dev \
20                 libxcb-xinerama0-dev \
21                 libxkbcommon-dev \
22                 libxkbcommon-x11-dev

Qt 6.5:

1sudo apt install libfontconfig1-dev \
2                 libfreetype6-dev \
3                 libx11-dev \
4                 libx11-xcb-dev \
5                 libxext-dev \
6                 libxfixes-dev \
7                 libxi-dev \
8                 libxrender-dev \
9                 libxcb1-dev \
10                 libxcb-cursor-dev \
11                 libxcb-glx0-dev \
12                 libxcb-keysyms1-dev \
13                 libxcb-image0-dev \
14                 libxcb-shm0-dev \
15                 libxcb-icccm4-dev \
16                 libxcb-sync-dev \
17                 libxcb-xfixes0-dev \
18                 libxcb-shape0-dev \
19                 libxcb-randr0-dev \
20                 libxcb-render-util0-dev \
21                 libxcb-util-dev \
22                 libxcb-xinerama0-dev \
23                 libxcb-xkb-dev \
24                 libxkbcommon-dev \
25                 libxkbcommon-x11-dev

安装后重新构建即可:

1rm config.cache
2./configure -nomake examples -prefix /opt/qt-6.5.2 -opensource -confirm-license -release -xcb
3make
4make install

单独编译某个模块的命令为:

1make module-qtbase                     # 单独编译 qtbase
2make module-qtbase-install_subtargets  # 单独安装 qtbase

另外,如果需要 OpenGL 的话,可以安装以下包:

1sudo apt install libgl1-mesa-dev \
2                 libglu1-mesa-dev \
3                 libx11-dev

如果不需要 OpenGL 的话,在 configure 步骤添加 -no-opengl 选项即可。

如果需要使用 SSL 的话,可以安装以下包:

1sudo apt install libssl-dev \
2                 openssl

如果不需要 OpenGL 的话,在 configure 步骤添加 -no-ssl 选项即可。

缓存问题:

执行过 configure 之后再安装依赖,再次执行 configure 仍会提示缺少依赖,可以删除 config.cache 来解决。

查找路径问题:

执行 configure 时可以使用 -I-L 选项添加查找路径。

参考: